# -*- coding: utf-8 -*-
# __author__:鲍盈廷
# 2020-04-26
#!/usr/bin/python
import time
import datetime
import random
from time import sleep

from urllib import parse
#---------------获取url中的参数值------------------------
def get_urlparse(urldata,get_parse):
    result = parse.urlparse(urldata)
    urlparse_dict=parse.parse_qs(result.query)
    return urlparse_dict[get_parse][0]
#-----------计算分佣比例------------------------
def get_InviteAmount(a,b):
    return "%.2f" % (float(a)*float(b)/100)
#-----------金额分兑换成元------------------------
def get_price(a):
    return "%.2f" % (float(a)/100)
#-----------计算一级、二级返现转换成元------------------
def get_InviteAmount_dollor(a,b):
    c=get_InviteAmount(a,b)
    return get_price(c)
#---------获取H5的cookies----------------------------
def get_cookies(JLBSESSIONID,MSSID):
    cookies_str=f'JLBSESSIONID={JLBSESSIONID}; MSSID={MSSID}'
    return cookies_str
# 获取动态列表接口返回的data字段中的所有id，生成字典{'id':str(one['id'])}结果返回一个列表
def get_id(ones):
    return  [{'id':str(one['id'])} for one in ones ]
#-----------将输入的字符串false/true转换bool类型---------------------
def change_bool(bool):
    """
    :param bool: 入参，false,true
    :return: 返回入参相同的布尔类型
    """
    data = bool
    isTrue = data == 'true'
    return isTrue
#-----------将输入的字符串false/true转换成0/1---------------------
def change_num(str):
    if str=='false':
        return "0"
    else:return "1"
#---------将入参拼接后返回---------------------
def get_join(str1):
    str2=str(random.randint(1,99))
    str1=str(str1)+str2
    return str1
#------------判断两个入参是否相等，不相等抛出错误-----------------------------
def Consistent_judgement(str1,str2):
    if str1!=str2:
        raise TypeError(f"{str1} not equal {str2}")
# 调用两次相同动态列表的接口获取不同的数据
def get_newdata(first,second):
    '''
    :param first: 第一次接口请求参数
    :param second: 第二次接口请求参数
    :return: 返回第二次接口的数据不在第一个接口中的数据
    '''
    autual_list=[]
    for one in second:
        if one not in first:
            autual_list.append(one)
# 获取一个字符串的任意长度
def get_info_len(str,start,end):
    """
    :param num: 需要截取的字符串
    :param start: 截取的开始位置,从0开始
    :param end: 截取的结束位置，包含+1
    :return: 返回截取后的内容
    """
    return str[int(start):int(end)]
# 计算长度返回str类型
def get_len(a):
    return str(len(a))
# 返回总长度+1
def get_len1(a):
    return str(len(a)+1)
# ------------获取当前日期+时间，格式是月到秒%m%d%H%M%S--------------------
def time_today_y_s1():
    return datetime.datetime.now().strftime('%m%d%H%M%S')
# ------------获取所有的id值，生成列表随机返回列表中的一个值---------------------
def get_radomdata(datas):
    data=[one['id'] for one in datas]
    return random.choice(data)
# ------------获取所有的输入字段值，生成列表随机返回列表中的一个值---------------------
def get_radomdata2(datas,str,choice_type=1):
    data = [one[str] for one in datas]
    if choice_type==1:
        return random.choice(data)
    else:
        return random.sample(data,random.randint(1,len(data)-1))
# ------------获取所有的输入字段值，根据传入参数名的生成字典{参数名：参数值}生成列表--------------------
def get_radomdata3(a,datas,*args):
    """
    a=1返回所有
    a=2返回一个
    a=3随机返回多个
    """
    if datas==[]:
        return []
    else:
        data=[]
        for one in datas:
            data1 ={ arg:str(one[arg]) for arg in args }
            data.append(data1)
        if a==1:
            return data
        elif a==2:
            return random.choice(data)
        else:
            return data[0:random.randint(1, len(data)-1)]
#--------------------传入的值加随机值并返回-------------------
def get_max_random(data):
    return int(data)+random.randint(300,999)
# --------------------传入的值随机返回一个列表-------------------
def get_radomdata4(data):
    if data==[]:
        raise print('[]' )
    else:
        return random.sample(data,random.randint(1,len(data)))
# --------------------获取列表中某个key的值-------------------
def get_keyvaluse(data,keys):
    return data[keys]
#----------------获取多少天后的时间戳，多少位的时间戳，默认0天13位,int类型-------------------
def get_future_timestamp_int(day=0, num=13):
    """
    获取多少天后的时间戳，多少位的时间戳，默认0天13位
    :param day: 多少天后
    :param num: 多少位时间戳
    :return: 时间戳
    """
    try:
        now = datetime.date.today()
        day = datetime.timedelta(days=day)
        base_day = now + day
        date = base_day.strftime('%Y-%m-%d')
        date_time = time.strptime(date, '%Y-%m-%d')
        timestamp = time.mktime(date_time)
        # 计算多少位时间戳
        if num <= 13:
            base_time = 10 ** (num - 13) * 1000
        base_timestamp = str((timestamp * base_time)).split('.')[0]
        return int(base_timestamp)
    except Exception as error:
        print(error)
        return 0
#---------------时间戳(毫秒)转换成字符串格式:"2013-10-10"--------------------------
def time_change_str_b(timestamp):
    time_local = time.localtime(timestamp/1000)
    return  time.strftime("%Y-%m-%d", time_local)
#---------------日期字符串格式转换:"2013-10-10"--------------------------
def change_str_b(a):
    b=f"{a[0:4]}-{a[-4:-2]}-{a[-2:]}"
    return  b
if __name__ == '__main__':
    print(get_id(a['middle']))
    print(get_len(a['middle']))
#-----日期和时间拼接-----------------------
def date_join_time(datestr,timestr):
    date=datetime.datetime.strptime(datestr,'%Y%m%d')
    date_time_str=date.strftime('%Y-%m-%d')+ ' '+timestr
    print(type(date_time_str))
    return date_time_str
#----------字符串时分秒转换成秒-----------------------------------
def str2sec(x=datetime.datetime.now().strftime(' %H:%M:%S')):
    '''
    字符串时分秒转换成秒
    '''
    h, m, s = x.strip().split(':') #.split()函数将其通过':'分隔开，.strip()函数用来除去空格
    s=00#课程时间只取到分
    return int(h)*3600 + int(m)*60 + int(s) #int()函数转换成整数运算
#----------当前时间增加几秒----------------------------------
def nowtime_add_seconds(seconds=1):
    # print(datetime.datetime.now().strftime('%H:%M:%S'))
    return (datetime.datetime.now()+datetime.timedelta(seconds=seconds)).strftime('%H:%M:%S')
#----------当前时间增加几分钟-----------------------------------
def nowtime_add_minutes(minutes=1):
    # print(datetime.datetime.now().strftime('%H:%M:%S'))
    return (datetime.datetime.now()+datetime.timedelta(minutes=minutes)).strftime('%H:%M:%S')
#----------当前时间增加几个小时-----------------------------------
def nowtime_add_hours(hours=1):
    # print(datetime.datetime.now().strftime('%H:%M:%S'))
    return (datetime.datetime.now()+datetime.timedelta(hours=hours)).strftime('%H:%M:%S')
#----------根据输入往后多少天的日期-----------------------------------
def data_add_days(daycount=0):
    data = datetime.date.today()
    if not daycount:
        data=datetime.date.today()
    else:
        delta=datetime.timedelta(days=daycount)
        data=data+delta
    return data.strftime('%Y%m%d')
#----------根据输入往前多少天的日期-----------------------------------
def data_del_days(daycount=0):
    data = datetime.date.today()
    if not daycount:
        data=datetime.date.today()
    else:
        delta=datetime.timedelta(days=daycount)
        data=data-delta
    return data.strftime('%Y%m%d')
# 获取指定时间的时间戳,单位毫秒
def get_timestampms(date=None):
    if not date:
        return int(time.time())
    timestamp = 0
    try:
        date_time = time.strptime(date, '%Y-%m-%d %H:%M:%S')
        timestamp = time.mktime(date_time)
    except Exception as e:
        return 0
    return int(timestamp * 1000)
#----------------输入延后的日期和当前时间加长几秒、几分、几小时，生成时间戳----------------------------------------
def set_timestamps(add_time_type,add_times,days=0,set_days_type='add'):
    if set_days_type=='add':
        set_date=data_add_days(days)
    elif set_days_type=='del':
        set_date=data_del_days(days)
    # set_time=set_time.split(":")
    # add_time_type=set_time[0]
    # add_times=int(set_time[1])
    add_times=int(add_times)
    if add_time_type=='seconds':
        add_times = nowtime_add_seconds(add_times)
    elif add_time_type=='hours':
        add_times = nowtime_add_hours(add_times)
    elif add_time_type == 'minutes':
        add_times = nowtime_add_minutes(add_times)
    print(date_join_time(set_date,add_times))
    return get_timestampms(date_join_time(set_date,add_times))

